package com.jxpanda.commons.toolkit;

import com.jxpanda.commons.digest.AbstractDigest;
import com.jxpanda.commons.digest.MD5;
import com.jxpanda.commons.digest.SHA256;
import lombok.extern.slf4j.Slf4j;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 各种摘要算法
 *
 * @author Panda
 */
@Slf4j
public class DigestKit {


    /**
     * 返回MD5算法对象
     */
    public static AbstractDigest md5() {
        return new MD5();
    }

    /**
     * 返回sha256算法对象
     */
    public static AbstractDigest sha256() {
        return new SHA256();
    }

    /**
     * 返回一个指定算法的对象
     * 调用的就是MessageDigest对象的getInstance函数，只是内部做了try-catch
     *
     * @param algorithm 算法名称
     * @return 摘要算法对象，没有获取到的话返回null
     */
    private static MessageDigest getInstance(String algorithm) {
        try {
            return MessageDigest.getInstance(algorithm);
        } catch (NoSuchAlgorithmException e) {
            log.error("[MESSAGE DIGEST ERROR] No Such Algorithm", e);
        }
        return null;
    }

}
